﻿
/**************************************************************************************
 *           Jexus/TinyFox OWIN 适配器 开发示例
 * ==================================================================================
 * 本示例的目的：
 *   演示如何开发一个的“MS OWIN 中间件”，并添加到 Microsoft.Owin的处理序列中
 * 
 * 使用方法：
 *   将编译得到的dll连同Owin.dll、Microsoft.Owin.dll等文件一并放置到网站的bin文件夹中
 *************************************************************************************/


#region <USINGs>

using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.Owin.Builder;

#endregion


namespace MsOwin.Demo2
{

    public class Adapter
    {
        static Func<IDictionary<string, object>, Task> _owinAppFunc;

        /// <summary>
        /// 适本器构造函数
        /// </summary>
        public Adapter()
        {
            var builder = new AppBuilder();
            new Startup().Configuration(builder);
            _owinAppFunc = builder.Build();
        }


        /// <summary>
        /// *** JWS或TinyFox所需要的关键函数 ***
        /// <para>每个请求到来，JWS/TinyFox都把请求打包成字典，通过这个函数提供给本应用</para>
        /// </summary>
        /// <param name="env">新请求的环境字典</param>
        /// <returns>返回一个正在运行或已经完成的任务</returns>
        public Task OwinMain(IDictionary<string, object> env)
        {
            return _owinAppFunc != null ? _owinAppFunc(env) : null;
        }



    }
}
